//先导入axios模块
import axios from 'axios'
//post请求的参数修改格式
import qs from 'querystring'

//可以使用自定义配置新建一个 axios 实例
const instance = axios.create({
    // baseURL: 'http://iwenwiki.com',//公共的全局请求的base路径
    timeout: 5000,//请求超时 等待时间
})

//拦截器
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么  config --请求头信息
    if(config.method == 'post'){//post请求 处理传递参数格式 { }-->xx=xx&xx=xx
        config.data = qs.stringify(config.data)
    }
    //设置请求头配置 或者 发送token 
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });


// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 对响应错误做点什么 -- 封装 错误信息的状态码的含义做一个说明 方便查看错误信息 
    // console.log('响应拦截器---error',error);
    let {response} = error;
    // console.log(response);
    //封装函数--解析状态的信息提示
    ResponseError(response)
});
  /**
 * 错误函数 解析常用的http状态码
 * 2xx：成功
 * 3xx: 重定向
 * 4xx: 资源不存在
 * 5xx：服务器错误
 * 
 */

  function ResponseError({status,info}){
        switch (status) {
            case 400:
                console.log('400-表示请求报文中存在语法错');
                break;
            case 401:
                console.log('401-未经许可，需要通过HTTP认证');
                break;
            case 403:
                console.log('403-服务器拒绝该次访问（访问权限出现问题）');
                break;
            case 404:
                console.log('404-表示服务器上无法找到请求的资源');
                break;
            case 500:
                console.log('500-表示服务器在执行请求时发生了错误，也有可能是web应用存在的bug或某些临时的错误时；');
                break;
            case 503:
                console.log('503-表示服务器暂时处于超负载或正在进行停机维护，无法处理请求');
                break;
            default:
                console.log(info);
                break;
        }
  }



export default instance